send message for all watched users

Brightcells 9 ans auparavant
Parent
Commettre
e920b279d1
3 fichiers modifiés avec 102 ajouts et 26 suppressions
  1. 70 25
      group/views.py
  2. 30 1
      utils/redis/rgroup.py
  3. 2 0
      utils/redis/rkeys.py

+ 70 - 25
group/views.py

@@ -23,9 +23,10 @@ from message.models import UserMessageInfo
23 23
 from utils.error.errno_utils import GroupPhotoStatusCode, GroupStatusCode, GroupUserStatusCode, UserStatusCode
24 24
 from utils.error.response_utils import response
25 25
 from utils.page_utils import pagination
26
-from utils.redis.rgroup import (del_group_photo_thumbup_flag, get_group_info, get_group_photo_data,
27
-                                get_group_photo_thumbup_flag, get_group_users_info, set_group_info,
28
-                                set_group_photo_data, set_group_photo_thumbup_flag, set_group_users_info)
26
+from utils.redis.rgroup import (del_group_photo_thumbup_flag, get_group_info, get_group_photo_comment_list,
27
+                                get_group_photo_data, get_group_photo_thumbup_flag, get_group_photo_thumbup_list,
28
+                                get_group_users_info, set_group_info, set_group_photo_data,
29
+                                set_group_photo_thumbup_flag, set_group_users_info)
29 30
 from utils.redis.rkeys import (GROUP_LAST_PHOTO_PK, GROUP_USERS_APPLYING_SET, GROUP_USERS_DELETED_SET,
30 31
                                GROUP_USERS_PASSED_SET, GROUP_USERS_QUIT_SET, GROUP_USERS_REFUSED_SET,
31 32
                                LENSMAN_PHOTO_HAGGLE_TIMES, LENSMAN_PHOTO_PRICE)
@@ -683,15 +684,42 @@ def comment_submit_api(request):
683 684
             )
684 685
 
685 686
     # 群组照片评论列表
686
-    photo_comments = PhotoCommentInfo.objects.filter(
687
-        photo_id=photo_id,
688
-    )
687
+    photo_comments = get_group_photo_comment_list(photo_id)
688
+
689
+    # 群组照片点赞列表
690
+    photo_thumbups = get_group_photo_thumbup_list(photo_id)
691
+
692
+    # 给所有评论/点赞者发送提醒
693
+    for commenter in photo_comments:
694
+        UserMessageInfo.objects.create(
695
+            from_uid=user_id,
696
+            from_nickname=group_user.nickname,
697
+            from_avatar=group_user.avatar,
698
+            to_uid=commenter['user_id'],
699
+            group_id=group_photo.group_id,
700
+            photo_id=group_photo.pk,
701
+            msg_type=UserMessageInfo.COMMENT,
702
+            msg_title=u'评论',
703
+            msg_content=comment,
704
+        )
705
+    for thumber in photo_thumbups:
706
+        UserMessageInfo.objects.create(
707
+            from_uid=user_id,
708
+            from_nickname=group_user.nickname,
709
+            from_avatar=group_user.avatar,
710
+            to_uid=thumber['user_id'],
711
+            group_id=group_photo.group_id,
712
+            photo_id=group_photo.pk,
713
+            msg_type=UserMessageInfo.COMMENT,
714
+            msg_title=u'评论',
715
+            msg_content=comment,
716
+        )
689 717
 
690 718
     return JsonResponse({
691 719
         'status': 200,
692 720
         'message': u'评论成功',
693 721
         'data': {
694
-            'comments': [comment.comment_info for comment in photo_comments],
722
+            'comments': photo_comments,
695 723
         }
696 724
     })
697 725
 
@@ -719,7 +747,7 @@ def thumbup_submit_api(request):
719 747
         return response(GroupPhotoStatusCode.GROUP_PHOTO_NOT_FOUND)
720 748
 
721 749
     # user_id 是否点赞 photo_id
722
-    if PhotoThumbUpInfo.objects.filter(photo_id=photo_id, user_id=user_id, thumbup=True).exists():
750
+    if get_group_photo_thumbup_flag(photo_id, user_id):
723 751
         return response(GroupPhotoStatusCode.DUPLICATE_THUMB_UP)
724 752
 
725 753
     # 群组照片点赞记录创建/更新
@@ -756,18 +784,44 @@ def thumbup_submit_api(request):
756 784
             msg_content=u'点赞',
757 785
         )
758 786
 
787
+    # 群组照片评论列表
788
+    photo_comments = get_group_photo_comment_list(photo_id)
789
+
759 790
     # 群组照片点赞列表
760
-    photo_thumbups = PhotoThumbUpInfo.objects.filter(
761
-        photo_id=photo_id,
762
-        thumbup=True,
763
-    )
791
+    photo_thumbups = get_group_photo_thumbup_list(photo_id)
792
+
793
+    # 给所有评论/点赞者发送提醒
794
+    for commenter in photo_comments:
795
+        UserMessageInfo.objects.create(
796
+            from_uid=user_id,
797
+            from_nickname=group_user.nickname,
798
+            from_avatar=group_user.avatar,
799
+            to_uid=commenter['user_id'],
800
+            group_id=group_photo.group_id,
801
+            photo_id=group_photo.pk,
802
+            msg_type=UserMessageInfo.THUMBUP,
803
+            msg_title=u'点赞',
804
+            msg_content=u'点赞',
805
+        )
806
+    for thumber in photo_thumbups:
807
+        UserMessageInfo.objects.create(
808
+            from_uid=user_id,
809
+            from_nickname=group_user.nickname,
810
+            from_avatar=group_user.avatar,
811
+            to_uid=thumber['user_id'],
812
+            group_id=group_photo.group_id,
813
+            photo_id=group_photo.pk,
814
+            msg_type=UserMessageInfo.THUMBUP,
815
+            msg_title=u'点赞',
816
+            msg_content=u'点赞',
817
+        )
764 818
 
765 819
     return JsonResponse({
766 820
         'status': 200,
767 821
         'message': u'点赞提交成功',
768 822
         'data': {
769 823
             'thumbup': True,
770
-            'thumbups': [thumbup.thumbup_info for thumbup in photo_thumbups],
824
+            'thumbups': photo_thumbups,
771 825
         }
772 826
     })
773 827
 
@@ -782,21 +836,12 @@ def thumbup_list_api(request):
782 836
     user_id = request.POST.get('user_id', '')
783 837
     photo_id = request.POST.get('photo_id', '')
784 838
 
785
-    # user_id 是否点赞 photo_id
786
-    thumbup = PhotoThumbUpInfo.objects.filter(photo_id=photo_id, user_id=user_id, thumbup=True).exists()
787
-
788
-    # 群组照片点赞列表
789
-    photo_thumbups = PhotoThumbUpInfo.objects.filter(
790
-        photo_id=photo_id,
791
-        thumbup=True,
792
-    )
793
-
794 839
     return JsonResponse({
795 840
         'status': 200,
796 841
         'message': u'获取点赞列表成功',
797 842
         'data': {
798
-            'thumbup': thumbup,
799
-            'thumbups': [thumbup.thumbup_info for thumbup in photo_thumbups],
843
+            'thumbup': get_group_photo_thumbup_flag(photo_id, user_id),  # user_id 是否点赞 photo_id
844
+            'thumbups': get_group_photo_thumbup_list(photo_id),  # 群组照片点赞列表
800 845
         }
801 846
     })
802 847
 
@@ -824,7 +869,7 @@ def thumbup_cancel_api(request):
824 869
         return response(GroupPhotoStatusCode.GROUP_PHOTO_NOT_FOUND)
825 870
 
826 871
     # user_id 是否点赞 photo_id
827
-    if not PhotoThumbUpInfo.objects.filter(photo_id=photo_id, user_id=user_id, thumbup=True).exists():
872
+    if not get_group_photo_thumbup_flag(photo_id, user_id):
828 873
         return response(GroupPhotoStatusCode.THUMB_UP_NOT_FOUND)
829 874
 
830 875
     # 群组照片点赞取消

+ 30 - 1
utils/redis/rgroup.py

@@ -5,7 +5,8 @@ import json
5 5
 from django.conf import settings
6 6
 from django.core.serializers.json import DjangoJSONEncoder
7 7
 
8
-from utils.redis.rkeys import GROUP_INFO, GROUP_PHOTO_DATA, GROUP_PHOTO_THUMB_UP, GROUP_USERS_INFO
8
+from utils.redis.rkeys import (GROUP_INFO, GROUP_PHOTO_COMMENT_LIST, GROUP_PHOTO_DATA, GROUP_PHOTO_THUMB_UP,
9
+                               GROUP_PHOTO_THUMB_UP_LIST, GROUP_USERS_INFO)
9 10
 
10 11
 
11 12
 r = settings.REDIS_CACHE
@@ -106,3 +107,31 @@ def get_group_photo_thumbup_flag(photo_id, user_id):
106 107
             return True
107 108
         else:
108 109
             return False
110
+
111
+
112
+def set_group_photo_comment_list(photo_id):
113
+    """ 设置群组照片用户评论列表 """
114
+    from group.models import PhotoCommentInfo
115
+    photo_comments = PhotoCommentInfo.objects.filter(photo_id=photo_id)
116
+    photo_comments = [comment.comment_info for comment in photo_comments]
117
+    r.set(GROUP_PHOTO_COMMENT_LIST % photo_id, json.dumps(photo_comments))
118
+    return photo_comments
119
+
120
+
121
+def get_group_photo_comment_list(photo_id):
122
+    """ 获取群组照片用户评论列表 """
123
+    return json.loads(r.get(GROUP_PHOTO_COMMENT_LIST % photo_id) or '[]') or set_group_photo_comment_list(photo_id)
124
+
125
+
126
+def set_group_photo_thumbup_list(photo_id):
127
+    """ 设置群组照片用户点赞列表 """
128
+    from group.models import PhotoThumbUpInfo
129
+    photo_thumbups = PhotoThumbUpInfo.objects.filter(photo_id=photo_id, thumbup=True)
130
+    photo_thumbups = [thumbup.thumbup_info for thumbup in photo_thumbups]
131
+    r.set(GROUP_PHOTO_THUMB_UP_LIST % photo_id, json.dumps(photo_thumbups))
132
+    return photo_thumbups
133
+
134
+
135
+def get_group_photo_thumbup_list(photo_id):
136
+    """ 获取群组照片用户点赞列表 """
137
+    return json.loads(r.get(GROUP_PHOTO_THUMB_UP_LIST % photo_id) or '[]') or set_group_photo_thumbup_list(photo_id)

+ 2 - 0
utils/redis/rkeys.py

@@ -17,6 +17,8 @@ GROUP_USERS_QUIT_SET = 'group:users:quit:set:%s'  # SET,群组用户退出集
17 17
 # 群组照片相关
18 18
 GROUP_PHOTO_DATA = 'group:photo:data:%s'  # STRING,群组数据记录,photo_id
19 19
 GROUP_PHOTO_THUMB_UP = 'group:photo:thumb:up:%s:%s'  # STRING,群组照片用户点赞记录,photo_id、user_id
20
+GROUP_PHOTO_COMMENT_LIST = 'group:photo:comment:list:%s'  # STRING,群组照片用户评论列表,photo_id
21
+GROUP_PHOTO_THUMB_UP_LIST = 'group:photo:thumb:up:list:%s'  # STRING,群组照片用户点赞列表,photo_id
20 22
 GROUP_LAST_PHOTO_PK = 'group:last:photo:pk:%s'  # STRING,群组最后一张照片PK,group_id
21 23
 
22 24
 # 摄影师照片相关